﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionePolveriLib.BL;
using GestionePolveriLib.Facades;

namespace GestionePolveri2
{
    public partial class NuovoLottoDialog : Form
    {
        private Polvere m_PolvereInfo = new Polvere();
        private Lotto2 m_LottoInfo = new Lotto2();
        
        

        public Polvere PolvereInfo
        {
            get { return m_PolvereInfo; }
            set
            {
                m_PolvereInfo = value;
                this.label1.Text = string.Format("Codice Polvere: {0} - Descrizione: {1}", m_PolvereInfo.CodicePolvere, m_PolvereInfo.Descrizione);
            }
        }

        

        public Lotto2 LottoInfo
        {
            get { return m_LottoInfo; }
        }

        

        public NuovoLottoDialog()
        {
            InitializeComponent();

            //m_PolvereInfo = new Polvere();
            //m_LottoInfo = new Lotto();
           //this.label1.Text = string.Format("Codice Polvere: {0} - Descrizione: {1}", m_PolvereInfo.CodicePolvere, m_PolvereInfo.Descrizione);

            LoadScatole();
        }

        private void LoadScatole()
        {
            ScatoleFacade pf = new ScatoleFacade();

            pf.LoadScatoleAsync((result) =>
            {
                List<Scatola> m_data = new List<Scatola>();
                m_data.Add(new Scatola() { Formato = "Seleziona un formato", ID = -1 });
                m_data.AddRange((List<Scatola>)result);

                this.dyncmbScatole.DisplayMember = "Formato";
                this.dyncmbScatole.ValueMember = "ID";

                this.dyncmbScatole.DataSource = m_data;

                this.dyncmbScatole.SelectedIndex = 1;

            });
        }

        private void btnInserisci_Click(object sender, EventArgs e)
        {
            double quant = 0;
            if (double.TryParse(dynQuantita.Text, out quant))
            {
                m_LottoInfo.CodLotto = this.dynLottoTextBox.Text;
                m_LottoInfo.Giacenza = 0;
                m_LottoInfo.NuovaGiacenza = quant;
                m_LottoInfo.IDPolvere = m_PolvereInfo.ID;
                m_LottoInfo.DataScadenzaLotto = dynDataScadenzaTimePicker1.Value;
                m_LottoInfo.IDFormato = ((Scatola)(this.dyncmbScatole.SelectedItem)).ID;
                m_LottoInfo.Formato = ((Scatola)(this.dyncmbScatole.SelectedItem)).Formato;
                m_LottoInfo.Pezzatura = ((Scatola)(this.dyncmbScatole.SelectedItem)).Pezzatura;
                this.Close();
            }
            else
            {
                MessageBox.Show("Inserire un valore numerico per numero scatole");
                return;
            }
        }

        private void btnChiudi_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dyncmbScatole_SelectedIndexChanged(object sender, EventArgs e)
        {
            CalcolaQuantita();
        }

        private void CalcolaQuantita()
        {
            decimal quant = 0;
            decimal num = 0;

            if (!(this.dyncmbScatole.SelectedIndex == -1) && (decimal.TryParse(dynnumScatoleTextBox.Text, out num)))
            {
                quant = num * ((Scatola)(dyncmbScatole.SelectedValue)).Pezzatura;
                dynQuantita.Text = quant.ToString();
            }
        }

        
        private void dynLottoTextBox_TextChanged(object sender, EventArgs e)
        {
            CalcolaDataScadenza();
        }

        private void CalcolaDataScadenza()
        {
            if (!(string.IsNullOrEmpty(dynLottoTextBox.Text)))
            {
                LottoFacade lot = new LottoFacade();
                Lotto lotto = lot.GetLotto(dynLottoTextBox.Text);
                if (lotto == null)
                    this.dynDataScadenzaTimePicker1.Value = DateTime.Now.AddMonths(6);
                else
                    this.dynDataScadenzaTimePicker1.Value = lotto.DataScadenzaLotto;
            }
        }

        private void dynnumScatoleTextBox_TextChanged(object sender, EventArgs e)
        {
            CalcolaQuantita();
        }

    }
}
